// 给你一个整数数组 nums ，
// 请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），
// 返回其最大和。
// 子数组 是数组中的一个连续部分。

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function (nums) {
  const len = nums.length
  // dp[i] 表示以 nums[i] 结尾的最大数组长度
  const dp = new Array(len).fill(0)

  dp[0] = nums[0]

  let ans = nums[0]
  for (let i = 1; i < len; i++) {
    const p1 = dp[i - 1] + nums[i]
    const p2 = nums[i]
    dp[i] =  Math.max(p1, p2)
    ans = Math.max(ans, dp[i])
  }

  return ans
}

console.log(
  maxSubArray(
    [1]
  )
)












